home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / prtchk.arc / PRNTCHK.ASM next >
Encoding:
Assembly Source File  |  1985-12-11  |  3.5 KB  |  149 lines

  1.  
  2.                                                 
  3.  
  4.  
  5.     .LFCOND    
  6.     PAGE    60,132
  7.  
  8. ;
  9.     D3DR    EQU    0    ;ASSEMBLE
  10.                  ;DEVELOPERS RELEASE
  11.     COM    EQU    1
  12.     TRUE    EQU    1    ;DEFINE SYMBOLS
  13.     FALSE    EQU    0    ;for .t. and .f.
  14. ;***************************************
  15. CODESEG SEGMENT BYTE PUBLIC 'CODE'
  16.     ASSUME CS:CODESEG,ES:CODESEG
  17. ;---------------------------------------
  18. PRNTCHK    PROC    FAR
  19.     IF    COM
  20.       ORG    100H        ;ORG AT 100H
  21.     ENDIF
  22. START:    JMP    NEXT_STEP        ;SKIP PAST DATA
  23. ;
  24. MESS1    DB    'PRINTER OFF-LINE - PLEASE ADJUST',0DH,0AH,'$'
  25. MESS2    DB    'PRINTER NOT TURNED ON - PLEASE TURN IT ON',0DH,0AH,'$'
  26. MESS3    DB    'PRINTER AVAILABLE FOR PRINTING',0DH,0AH,'$'
  27. MESS4    DB    'PRESS ANY KEY TO CONTINUE',0DH,0AH,'$'
  28. OK    DB    ?
  29. ;
  30. NEXT_STEP:
  31.     PUSH    AX    ;SAVE REGISTERS
  32.     PUSH    BX
  33.     PUSH    DS
  34.     PUSH    ES
  35.     PUSH    CS
  36.     POP    ES
  37.     MOV    AX,40H    ;POINT TO SYSTEM DATA SEGMENT.
  38.     MOV    DS,AX
  39.     MOV    SI,8    ;POINT TO LPT1 PORT ADDRESS
  40.     MOV    DX,[SI]    ;LOAD IT INTO DX.
  41.     INC    DX    ;POINT TO LPT1 STATUS PORT
  42.     IN    AL,DX    ;AND READ IT.
  43.     CMP    AL,0DFH    ;PRINTER OK?
  44.     JNE    OFF_LINE    ; NO, IS IT OFF-LINE?
  45.     MOV    ES:OK,TRUE     ;PLACE .T. IN TEMPORARY VARIABLE.
  46.     IF    COM
  47.       MOV    DX,OFFSET MESS3    ;PRINT REPORT IF .COM FILE.
  48.       CALL    PRINTMESS
  49.     ENDIF
  50.     JMP    SHORT EXIT    ;RETURN TO DBASE.
  51. OFF_LINE:
  52.     CMP    AL,04FH
  53.     JNE    TURNED_OFF    ;NO, IT MUST BE TURNED OFF.
  54.     MOV    ES:OK,FALSE    ;PLACE .F. IN TEMPORARY VARIABLE.
  55.     IF    COM
  56.       MOV    DX,OFFSET MESS1     ;PRINT REPORT IF .COM FILE.
  57.       CALL    PRINTMESS
  58.       MOV     DX,OFFSET MESS4
  59.       CALL    PRINTMESS
  60.       CALL     CRLF    ;SKIP LINE.
  61.       POP    ES
  62.       POP    DS
  63.       POP    BX
  64.       POP    AX
  65.       CALL    WAIT    ;WAIT FOR KEYPRESS.
  66.            JMP    NEXT_STEP     ;GO BACK AND CHECK STATUS AGAIN.
  67.     ENDIF
  68.     JMP    SHORT EXIT    ;LEAVE IF OK.
  69. TURNED_OFF:
  70.     MOV    ES:OK,FALSE    ;PLACE .F. IN TEMPORARY VARIABLE.
  71.     IF    COM
  72.       MOV    DX,OFFSET MESS2    ;PRINT REPORT IF .COM FILE
  73.       CALL    PRINTMESS
  74.       MOV    DX,OFFSET MESS4
  75.       CALL     PRINTMESS
  76.       CALL    CRLF    ;SKIP LINE
  77.       POP    ES
  78.       POP    DS
  79.       POP    BX
  80.       POP    AX
  81.       CALL    WAIT    ;WAIT FOR KEYPRESS
  82.       JMP    NEXT_STEP     ;GO BACK AND CHECK STATUS AGAIN.
  83.     ENDIF
  84. EXIT:    POP    ES    ;RESTORE RIGISTERS
  85.     POP    DS    ;NOW DS AND BX ARE POINTING
  86.     POP    BX    ;TO VARIABLE PASSED BY DBASE III.
  87.     IF    D3DR
  88.       MOV    AL,ES:OK    ;GET .T. OR .F. FROM TEMPORARY
  89.             ;VARIABLE
  90.       MOV    BYTE PTR [BX],AL     ;PLACE IT IN DBASE VARIBLE.
  91.     ENDIF
  92.     POP    AX    ;RESTORE REMAINING REGISTERS.
  93.     IF    COM
  94.       INT    20H    ;INT 20H IF .COM FILE.
  95.     ELSE
  96.       RET        ;FAR RETURN IF DEVELOPERS RELEASE.
  97.     ENDIF
  98. ;
  99. PRNTCHK    ENDP
  100. ;------------------------------------------
  101. ;           SUBROUTINES
  102. ;------------------------------------------
  103. CRLF    PROC    NEAR    ;SKIPS LINE
  104.     PUSH    AX    ;SAVE REGISTERS
  105.     PUSH    DX
  106.     MOV    DL,0DH    ;PRINT CARRIAGE RETURN
  107.     MOV    AH,2
  108.     INT    21H
  109.     MOV    DL,0AH    ;PRINT LINE FEED.
  110.     MOV    AH,2
  111.     INT    21H
  112.     POP    DX    ;RESTORE REGISTERS
  113.     POP    AX
  114.     RET        ;RETURN TO CALLER.
  115. CRLF    ENDP
  116. ;----------------------------------------------
  117. PRINTMESS PROC    NEAR    ;PRINT MESSAGE
  118.     PUSH    AX    ;SAVE REGISTERS
  119.     PUSH    DS
  120.     MOV    AX,ES    ;ES POINTS TO PRNTCHK'S
  121.     MOV    DS,AX    ;DATA.
  122.     XOR    AX,AX    ;ZERO AX.
  123.     MOV    AH,9    ;CALL DOS PRINT STRING FUNCTION
  124.     INT    21H
  125.     POP    DS    ;RESTORE REGISTERS
  126.     POP    AX
  127.     RET        ;RETURN TO CALLER
  128. PRINTMESS ENDP
  129. ;----------------------------------------------
  130. WAIT    PROC    NEAR    ;WAITS FOR KEYPRESS.
  131.             ;DOES NOT CHECK FOR CTRL-BREAK.
  132.  
  133.     PUSH    AX    ;SAVE REGISTERS
  134.     MOV    AH,1    ;CALL DOS, WAIT FOR KEYPRESS.
  135.     INT    21H    ;DON'T CHECK CTRL-BREAK FUNCTION.
  136.     POP    AX    ;RESTORE REGISTER
  137.     RET        ;RETURN TO CALLER
  138. WAIT    ENDP
  139. ;--------------------------------------------
  140. CODESEG ENDS
  141. ;*********************************************
  142.     END    START        
  143.  
  144.     
  145.  
  146.     
  147.         
  148.  
  149.